5.1 Unterabfragen in SQL
MySQL ist schnell und leicht zu bedienen, dafür fehlt allerdings manche Funktionalität,
die bei anderen SQL-Datenbanken zur Standardausstattung gehört.
Beispielsweise fehlte bis zur Version 4.1 in MySQL die Funktionalität für Unterabfragen, mit
denen wir uns hier beschäftigen wollen. In diesem Kurs arbeiten wir mit der MySQL
Version 5.xx und können die Unterabfragen auch mit phpMyAdmin testen.
Wir werden in dieser Lektion zeigen wie man mit Unterabfragen arbeitet
und versuchen auch die eine oder andere Abfrage mit den herkömmlichen Methoden umzubauen.
Was sind aber Unterabfragen, und wozu sind sie gut?
Abfragen, die einen einzigen Wert zurückliefern, können als Unterabfragen (Subquery) in andere Abfragen eingesetzt werden.
Mit Unterabfragen haben Sie die Möglichkeit, mehrere Dinge
gleichzeitig abzufragen und die Ergebnisse wiederum einzugrenzen.
Beispielsweise wird es damit möglich, einfache Attributnamen mit
Aggregatfunktionen in Beziehung zu setzen, um etwa zu erfahren, welcher
Mitarbeiter denn nun der am besten Bezahlte oder der am schlechtesten Bezahlte ist, statt nur
das Bruttogehalt zu sehen und nicht den Namen. Die Form dieser Abfragen besteht aus
verschachtelten SELECT
-Abfragen:
SELECT ... FROM ... WHERE Feld Operator (SELECT ... FROM ... WHERE ...)
Je nach Größe der entstehenden Konstruktion können wir die Schreibweise anpassen, um die Übersicht zu behalten:
SELECT ... FROM ... WHERE Feld Operator (SELECT ... FROM ... WHERE ...)
Dabei wird die unterste (hinterste) SELECT
-Abfrage immer zuerst
ausgewertet (eine Vorselektion), daher ist auch die Klammerung nötig. Das in der untersten
SELECT
-Anweisung erhaltene Ergebnis wird dazu verwendet,
um die obere Selektion weiter einzuschränken.